from typing import List, Optional
from .message import Message


class Memory:
    def __init__(self):
        self._messages: List[Message] = []

    def add_message(self, message: Message):
        """添加一条消息到记忆中"""
        self._messages.append(message)

    def get_messages(self) -> List[Message]:
        """获取所有消息（返回副本以防止外部修改）"""
        return self._messages[:]

    def clear_memory(self):
        """清空记忆中的所有消息"""
        self._messages.clear()

    def find_messages_by_role(self, role: Optional[str]) -> List[Message]:
        """根据角色查找消息

        Args:
            role: 要查找的角色名称，可以为 None

        Returns:
            匹配角色的消息列表
        """
        return [msg for msg in self._messages if msg.role == role]
